package cl.ccs.migracionbcmc.dao.impl;

import cl.ccs.migracionbcmc.connection.ConnectionFactory;
import cl.ccs.migracionbcmc.dao.VariosDao;
import cl.ccs.migracionbcmc.model.Mensaje;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Types;

public class VariosDaoImpl implements VariosDao {
    public VariosDaoImpl() {
        super();
    }

    @Override
    public Mensaje insertaTarea(int codProceso, String codUsuario, String glosaTarea, int corrEnvio) {
        Connection con = null;
        Mensaje mensaje = new Mensaje();
        try {
            con = ConnectionFactory.getConnectionSybaseBIC();

            CallableStatement stm = con.prepareCall("{?=CALL SI_Tarea_VsNet(?,?,?,?,?,?)}");
            stm.registerOutParameter(1, Types.INTEGER);

            stm.setInt(2, codProceso); //Cod. Proceso
            stm.setString(3, codUsuario); //Cod. Usuario
            stm.setString(4, glosaTarea); //Glosa Tarea
            stm.setInt(5, corrEnvio); //Corr Envio

            stm.registerOutParameter(6, Types.INTEGER); //return
            stm.registerOutParameter(7, Types.VARCHAR); //mensaje
            stm.execute();

            mensaje.setCodigoMensaje(stm.getInt(6));
            mensaje.setMensaje(stm.getString(7));

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ConnectionFactory.freeConnection(con);
        }

        return mensaje;
    }

    @Override
    public Mensaje validaPrivilegios(String usuario, String privilegio) {
        Connection conMOL = null;
        Mensaje mensaje = new Mensaje();
        try {
            conMOL = ConnectionFactory.getConnectionInfocom();
            CallableStatement stmMOL = conMOL.prepareCall("{CALL PKG_USUARIOS.SQ_ValidaRol(?,?,?,?)}");
            stmMOL.setString(1, usuario);
            stmMOL.setString(2, privilegio);
            stmMOL.registerOutParameter(3, Types.VARCHAR); //Return
            stmMOL.registerOutParameter(4, Types.NUMERIC); //Mensaje
        
            stmMOL.execute();

            if (stmMOL.getInt(4) > 0) {
                mensaje.setCodigoMensaje(stmMOL.getInt(4));
                mensaje.setMensaje(stmMOL.getString(3));
            } else{
                mensaje.setCodigoMensaje(0);
                mensaje.setMensaje("Privilegio aprobado");
            }

        } catch (Exception e) {
            e.printStackTrace();
            mensaje.setCodigoMensaje(78000);
            mensaje.setMensaje("Error : " + e.getMessage());
            return mensaje;
        } finally {
            ConnectionFactory.freeConnection(conMOL);
        }
        return mensaje;
    }
}
